In the field of software development and deployment, software “containers” provide a layer of abstraction and virtualization for a running application. For example, some Linux kernels support “namespaces”, which at least partially isolates an application's view of the underlying operating system (e.g., processes, users, and filesystems), as well as “cgroups” (control groups, or “process containers”), which isolates resource usage (e.g., cpu, memory) for a group of processes. DOCKER® is an open-source project that provides tools for packaging an application and associated components such as to facilitate portability between various execution environments such as, for example, cloud environments such as “Container as a Service”, or “Caas”, environments, physical server environments (e.g., traditional “bare metal” servers), and virtual server environments. (Docker, Inc., a Delaware Corporation). Docker offers one example of a container for software applications (a “container application”) that leverages underlying operating system functionality (e.g., Linux namespaces and cgroups) to provide an isolated or restricted operating environment for applications.
It would be helpful to have a system and method for automatically generating containers or container definitions for a particular application and its associated components.